home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / lmshare.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  10.5 KB  |  459 lines

  1. /*++ BUILD Version: 0001    // Increment this if a change has global effects
  2.  
  3. Copyright (c) 1990-1996  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     lmshare.h
  8.  
  9. Abstract:
  10.  
  11.     This module defines the API function prototypes and data structures
  12.     for the following groups of NT API functions:
  13.         NetShare
  14.         NetSession
  15.         NetFile
  16.         NetConnection
  17.  
  18. Environment:
  19.  
  20.     User Mode - Win32
  21.  
  22. Notes:
  23.  
  24.     You must include <windef.h> and <lmcons.h> before this file.
  25.  
  26. --*/
  27. /*
  28.  *      C/C++ Run Time Library - Version 9.0
  29.  *
  30.  *      Copyright (c) 1997, 1998 by Borland International
  31.  *      All Rights Reserved.
  32.  *
  33.  */
  34.  
  35. #ifndef __LMSHARE_H
  36. #define __LMSHARE_H
  37. #pragma option push -b
  38.  
  39. //
  40. // SHARE API
  41. //
  42.  
  43. #ifndef _LMSHARE_
  44. #define _LMSHARE_
  45.  
  46.  
  47. #ifdef __cplusplus
  48. extern "C" {
  49. #endif
  50.  
  51. //
  52. // Function Prototypes - Share
  53. //
  54.  
  55. NET_API_STATUS NET_API_FUNCTION
  56. NetShareAdd (
  57.     IN  LPTSTR  servername,
  58.     IN  DWORD   level,
  59.     IN  LPBYTE  buf,
  60.     OUT LPDWORD parm_err
  61.     );
  62.  
  63. NET_API_STATUS NET_API_FUNCTION
  64. NetShareEnum (
  65.     IN  LPTSTR      servername,
  66.     IN  DWORD       level,
  67.     OUT LPBYTE      *bufptr,
  68.     IN  DWORD       prefmaxlen,
  69.     OUT LPDWORD     entriesread,
  70.     OUT LPDWORD     totalentries,
  71.     IN OUT LPDWORD  resume_handle
  72.     );
  73.  
  74. NET_API_STATUS NET_API_FUNCTION
  75. NetShareEnumSticky (
  76.     IN  LPTSTR      servername,
  77.     IN  DWORD       level,
  78.     OUT LPBYTE      *bufptr,
  79.     IN  DWORD       prefmaxlen,
  80.     OUT LPDWORD     entriesread,
  81.     OUT LPDWORD     totalentries,
  82.     IN OUT LPDWORD  resume_handle
  83.     );
  84.  
  85. NET_API_STATUS NET_API_FUNCTION
  86. NetShareGetInfo (
  87.     IN  LPTSTR  servername,
  88.     IN  LPTSTR  netname,
  89.     IN  DWORD   level,
  90.     OUT LPBYTE  *bufptr
  91.     );
  92.  
  93. NET_API_STATUS NET_API_FUNCTION
  94. NetShareSetInfo (
  95.     IN  LPTSTR  servername,
  96.     IN  LPTSTR  netname,
  97.     IN  DWORD   level,
  98.     IN  LPBYTE  buf,
  99.     OUT LPDWORD parm_err
  100.     );
  101.  
  102. NET_API_STATUS NET_API_FUNCTION
  103. NetShareDel     (
  104.     IN  LPTSTR  servername,
  105.     IN  LPTSTR  netname,
  106.     IN  DWORD   reserved
  107.     );
  108.  
  109. NET_API_STATUS NET_API_FUNCTION
  110. NetShareDelSticky (
  111.     IN  LPTSTR  servername,
  112.     IN  LPTSTR  netname,
  113.     IN  DWORD   reserved
  114.     );
  115.  
  116. NET_API_STATUS NET_API_FUNCTION
  117. NetShareCheck   (
  118.     IN  LPTSTR  servername,
  119.     IN  LPTSTR  device,
  120.     OUT LPDWORD type
  121.     );
  122.  
  123. //
  124. // Data Structures - Share
  125. //
  126.  
  127. typedef struct _SHARE_INFO_0 {
  128.     LPTSTR  shi0_netname;
  129. } SHARE_INFO_0, *PSHARE_INFO_0, *LPSHARE_INFO_0;
  130.  
  131. typedef struct _SHARE_INFO_1 {
  132.     LPTSTR  shi1_netname;
  133.     DWORD   shi1_type;
  134.     LPTSTR  shi1_remark;
  135. } SHARE_INFO_1, *PSHARE_INFO_1, *LPSHARE_INFO_1;
  136.  
  137. typedef struct _SHARE_INFO_2 {
  138.     LPTSTR  shi2_netname;
  139.     DWORD   shi2_type;
  140.     LPTSTR  shi2_remark;
  141.     DWORD   shi2_permissions;
  142.     DWORD   shi2_max_uses;
  143.     DWORD   shi2_current_uses;
  144.     LPTSTR  shi2_path;
  145.     LPTSTR  shi2_passwd;
  146. } SHARE_INFO_2, *PSHARE_INFO_2, *LPSHARE_INFO_2;
  147.  
  148. typedef struct _SHARE_INFO_502 {
  149.     LPTSTR  shi502_netname;
  150.     DWORD   shi502_type;
  151.     LPTSTR  shi502_remark;
  152.     DWORD   shi502_permissions;
  153.     DWORD   shi502_max_uses;
  154.     DWORD   shi502_current_uses;
  155.     LPTSTR  shi502_path;
  156.     LPTSTR  shi502_passwd;
  157.     DWORD   shi502_reserved;
  158.     PSECURITY_DESCRIPTOR  shi502_security_descriptor;
  159. } SHARE_INFO_502, *PSHARE_INFO_502, *LPSHARE_INFO_502;
  160.  
  161. typedef struct _SHARE_INFO_1004 {
  162.     LPTSTR  shi1004_remark;
  163. } SHARE_INFO_1004, *PSHARE_INFO_1004, *LPSHARE_INFO_1004;
  164.  
  165. typedef struct _SHARE_INFO_1005 {
  166.     DWORD  shi1005_flags;
  167. } SHARE_INFO_1005, *PSHARE_INFO_1005, *LPSHARE_INFO_1005;
  168.  
  169.  
  170. typedef struct _SHARE_INFO_1006 {
  171.     DWORD   shi1006_max_uses;
  172. } SHARE_INFO_1006, *PSHARE_INFO_1006, *LPSHARE_INFO_1006;
  173.  
  174. typedef struct _SHARE_INFO_1501 {
  175.     DWORD   shi1501_reserved;
  176.     PSECURITY_DESCRIPTOR  shi1501_security_descriptor;
  177. } SHARE_INFO_1501, *PSHARE_INFO_1501, *LPSHARE_INFO_1501;
  178.  
  179. //
  180. // Special Values and Constants - Share
  181. //
  182.  
  183. //
  184. // Values for parm_err parameter.
  185. //
  186.  
  187. #define SHARE_NETNAME_PARMNUM         1
  188. #define SHARE_TYPE_PARMNUM            3
  189. #define SHARE_REMARK_PARMNUM          4
  190. #define SHARE_PERMISSIONS_PARMNUM     5
  191. #define SHARE_MAX_USES_PARMNUM        6
  192. #define SHARE_CURRENT_USES_PARMNUM    7
  193. #define SHARE_PATH_PARMNUM            8
  194. #define SHARE_PASSWD_PARMNUM          9
  195. #define SHARE_FILE_SD_PARMNUM       501
  196.  
  197. //
  198. // Single-field infolevels for NetShareSetInfo.
  199. //
  200.  
  201. #define SHARE_REMARK_INFOLEVEL          \
  202.             (PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM)
  203. #define SHARE_MAX_USES_INFOLEVEL        \
  204.             (PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM)
  205. #define SHARE_FILE_SD_INFOLEVEL         \
  206.             (PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM)
  207.  
  208. #define SHI1_NUM_ELEMENTS       4
  209. #define SHI2_NUM_ELEMENTS       10
  210.  
  211.  
  212. //
  213. // Share types (shi1_type and shi2_type fields).
  214. //
  215.  
  216. #define STYPE_DISKTREE          0
  217. #define STYPE_PRINTQ            1
  218. #define STYPE_DEVICE            2
  219. #define STYPE_IPC               3
  220.  
  221. #define STYPE_SPECIAL           0x80000000
  222.  
  223. #define SHI_USES_UNLIMITED      (DWORD)-1
  224.  
  225. //
  226. // Flags values for the 1005 infolevel
  227. //
  228. #define SHI1005_FLAGS_DFS  0x01        // Share is in the DFS
  229. #define SHI1005_FLAGS_DFS_ROOT 0x02    // Share is root of DFS
  230.  
  231. #endif // _LMSHARE_
  232.  
  233. //
  234. // SESSION API
  235. //
  236.  
  237. #ifndef _LMSESSION_
  238. #define _LMSESSION_
  239.  
  240. //
  241. // Function Prototypes Session
  242. //
  243.  
  244. NET_API_STATUS NET_API_FUNCTION
  245. NetSessionEnum (
  246.     IN  LPTSTR      servername OPTIONAL,
  247.     IN  LPTSTR      UncClientName OPTIONAL,
  248.     IN  LPTSTR      username OPTIONAL,
  249.     IN  DWORD       level,
  250.     OUT LPBYTE      *bufptr,
  251.     IN  DWORD       prefmaxlen,
  252.     OUT LPDWORD     entriesread,
  253.     OUT LPDWORD     totalentries,
  254.     IN OUT LPDWORD  resume_handle OPTIONAL
  255.     );
  256.  
  257. NET_API_STATUS NET_API_FUNCTION
  258. NetSessionDel (
  259.     IN  LPTSTR      servername OPTIONAL,
  260.     IN  LPTSTR      UncClientName,
  261.     IN  LPTSTR      username
  262.     );
  263.  
  264. NET_API_STATUS NET_API_FUNCTION
  265. NetSessionGetInfo (
  266.     IN  LPTSTR      servername OPTIONAL,
  267.     IN  LPTSTR      UncClientName,
  268.     IN  LPTSTR      username,
  269.     IN  DWORD       level,
  270.     OUT LPBYTE      *bufptr
  271.     );
  272.  
  273.  
  274. //
  275. // Data Structures - Session
  276. //
  277.  
  278. typedef struct _SESSION_INFO_0 {
  279.     LPTSTR    sesi0_cname;              // client name (no backslashes)
  280. } SESSION_INFO_0, *PSESSION_INFO_0, *LPSESSION_INFO_0;
  281.  
  282. typedef struct _SESSION_INFO_1 {
  283.     LPTSTR    sesi1_cname;              // client name (no backslashes)
  284.     LPTSTR    sesi1_username;
  285.     DWORD     sesi1_num_opens;
  286.     DWORD     sesi1_time;
  287.     DWORD     sesi1_idle_time;
  288.     DWORD     sesi1_user_flags;
  289. } SESSION_INFO_1, *PSESSION_INFO_1, *LPSESSION_INFO_1;
  290.  
  291. typedef struct _SESSION_INFO_2 {
  292.     LPTSTR    sesi2_cname;              // client name (no backslashes)
  293.     LPTSTR    sesi2_username;
  294.     DWORD     sesi2_num_opens;
  295.     DWORD     sesi2_time;
  296.     DWORD     sesi2_idle_time;
  297.     DWORD     sesi2_user_flags;
  298.     LPTSTR    sesi2_cltype_name;
  299. } SESSION_INFO_2, *PSESSION_INFO_2, *LPSESSION_INFO_2;
  300.  
  301. typedef struct _SESSION_INFO_10 {
  302.     LPTSTR    sesi10_cname;             // client name (no backslashes)
  303.     LPTSTR    sesi10_username;
  304.     DWORD     sesi10_time;
  305.     DWORD     sesi10_idle_time;
  306. } SESSION_INFO_10, *PSESSION_INFO_10, *LPSESSION_INFO_10;
  307.  
  308. typedef struct _SESSION_INFO_502 {
  309.     LPTSTR    sesi502_cname;             // client name (no backslashes)
  310.     LPTSTR    sesi502_username;
  311.     DWORD     sesi502_num_opens;
  312.     DWORD     sesi502_time;
  313.     DWORD     sesi502_idle_time;
  314.     DWORD     sesi502_user_flags;
  315.     LPTSTR    sesi502_cltype_name;
  316.     LPTSTR    sesi502_transport;
  317. } SESSION_INFO_502, *PSESSION_INFO_502, *LPSESSION_INFO_502;
  318.  
  319.  
  320. //
  321. // Special Values and Constants - Session
  322. //
  323.  
  324.  
  325. //
  326. // Bits defined in sesi1_user_flags.
  327. //
  328.  
  329. #define SESS_GUEST          0x00000001  // session is logged on as a guest
  330. #define SESS_NOENCRYPTION   0x00000002  // session is not using encryption
  331.  
  332. #define SESI1_NUM_ELEMENTS  8
  333. #define SESI2_NUM_ELEMENTS  9
  334.  
  335. #endif // _LMSESSION_
  336.  
  337. //
  338. // CONNECTION API
  339. //
  340.  
  341. #ifndef _LMCONNECTION_
  342.  
  343. #define _LMCONNECTION_
  344.  
  345. //
  346. // Function Prototypes - CONNECTION
  347. //
  348.  
  349. NET_API_STATUS NET_API_FUNCTION
  350. NetConnectionEnum (
  351.     IN  LPTSTR  servername OPTIONAL,
  352.     IN  LPTSTR  qualifier,
  353.     IN  DWORD   level,
  354.     OUT LPBYTE  *bufptr,
  355.     IN  DWORD   prefmaxlen,
  356.     OUT LPDWORD entriesread,
  357.     OUT LPDWORD totalentries,
  358.     IN OUT LPDWORD resume_handle OPTIONAL
  359.     );
  360.  
  361. //
  362. // Data Structures - CONNECTION
  363. //
  364.  
  365. typedef struct _CONNECTION_INFO_0 {
  366.     DWORD   coni0_id;
  367. } CONNECTION_INFO_0, *PCONNECTION_INFO_0, *LPCONNECTION_INFO_0;
  368.  
  369. typedef struct _CONNECTION_INFO_1 {
  370.     DWORD   coni1_id;
  371.     DWORD   coni1_type;
  372.     DWORD   coni1_num_opens;
  373.     DWORD   coni1_num_users;
  374.     DWORD   coni1_time;
  375.     LPTSTR  coni1_username;
  376.     LPTSTR  coni1_netname;
  377. } CONNECTION_INFO_1, *PCONNECTION_INFO_1, *LPCONNECTION_INFO_1;
  378.  
  379. #endif // _LMCONNECTION_
  380.  
  381. //
  382. // FILE API
  383. //
  384.  
  385. #ifndef _LMFILE_
  386. #define _LMFILE_
  387.  
  388. //
  389. // Function Prototypes - FILE
  390. //
  391.  
  392. NET_API_STATUS NET_API_FUNCTION
  393. NetFileClose (
  394.     IN LPTSTR   servername OPTIONAL,
  395.     IN DWORD    fileid
  396.     );
  397.  
  398. NET_API_STATUS NET_API_FUNCTION
  399. NetFileEnum (
  400.     IN  LPTSTR      servername OPTIONAL,
  401.     IN  LPTSTR      basepath OPTIONAL,
  402.     IN  LPTSTR      username OPTIONAL,
  403.     IN  DWORD       level,
  404.     OUT LPBYTE      *bufptr,
  405.     IN  DWORD       prefmaxlen,
  406.     OUT LPDWORD     entriesread,
  407.     OUT LPDWORD     totalentries,
  408.     IN OUT LPDWORD  resume_handle OPTIONAL
  409.     );
  410.  
  411. NET_API_STATUS NET_API_FUNCTION
  412. NetFileGetInfo (
  413.     IN  LPTSTR  servername OPTIONAL,
  414.     IN  DWORD   fileid,
  415.     IN  DWORD   level,
  416.     OUT LPBYTE  *bufptr
  417.     );
  418.  
  419. //
  420. // Data Structures - File
  421. //
  422.  
  423. //  File APIs are available at information levels 2 & 3 only. Levels 0 &
  424. //  1 are not supported.
  425. //
  426.  
  427. typedef struct _FILE_INFO_2 {
  428.     DWORD     fi2_id;
  429. } FILE_INFO_2, *PFILE_INFO_2, *LPFILE_INFO_2;
  430.  
  431. typedef struct _FILE_INFO_3 {
  432.     DWORD     fi3_id;
  433.     DWORD     fi3_permissions;
  434.     DWORD     fi3_num_locks;
  435.     LPTSTR    fi3_pathname;
  436.     LPTSTR    fi3_username;
  437. } FILE_INFO_3, *PFILE_INFO_3, *LPFILE_INFO_3;
  438.  
  439. //
  440. // Special Values and Constants - File
  441. //
  442.  
  443. //
  444. // bit values for permissions
  445. //
  446.  
  447. #define PERM_FILE_READ      0x1 // user has read access
  448. #define PERM_FILE_WRITE     0x2 // user has write access
  449. #define PERM_FILE_CREATE    0x4 // user has create access
  450.  
  451. #ifdef __cplusplus
  452. }
  453. #endif
  454.  
  455.  
  456. #endif // _LMFILE_
  457.  
  458. #pragma option pop
  459. #endif /* __LMSHARE_H */